package com.example.baselibrary.utlis

import android.annotation.SuppressLint
import android.content.Context
import android.os.Looper
import androidx.annotation.NonNull
import androidx.annotation.Nullable

// 改进后的版本示例
object ContextUtils {
    @SuppressLint("StaticFieldLeak")
    @Volatile
    private var context: Context? = null

    /**
     * 初始化工具类
     * @param context 应用上下文
     * @throws IllegalArgumentException 如果上下文为空
     */
    @Throws(IllegalArgumentException::class)
    fun init(context: Context) {
        this.context = context.applicationContext ?: throw IllegalArgumentException("应用上下文不能为空")
    }

    /** 检查是否已初始化 */
    val isInitialized: Boolean get() = context != null

    /**
     * 获取应用上下文
     * @throws IllegalStateException 如果未初始化
     */
    fun getContext(): Context = context ?: throw IllegalStateException(
        "必须在Application类中使用init()初始化ContextUtils"
    )

    /** 安全获取上下文（可空） */
    fun getContextSafely(): Context? = context

    // 可添加的实用方法
    fun isMainThread(): Boolean = Looper.myLooper() == Looper.getMainLooper()
}
